From 2e2e8763c259199aae75fdce6d607b1c01835aab Mon Sep 17 00:00:00 2001 From: Keir Fraser Date: Mon, 13 Jul 2009 11:18:57 +0100 Subject: [PATCH] i386: fix boot Since the Xen heap pages (which are the only ones mapped at this point) don't get passed to init_boot_pages(), it has no place to store the bootmem regions without faulting. Hence, a mapped page must be passed to that function as the very first thing. Signed-off-by: Jan Beulich --- xen/arch/x86/setup.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c index b7966dfd63..07c11c9788 100644 --- a/xen/arch/x86/setup.c +++ b/xen/arch/x86/setup.c @@ -763,7 +763,9 @@ void __init __start_xen(unsigned long mbi_p) reserve_e820_ram(&boot_e820, initial_images_base, initial_images_end); #if defined(CONFIG_X86_32) - xenheap_initial_phys_start = __pa(&_end); + xenheap_initial_phys_start = (PFN_UP(__pa(&_end)) + 1) << PAGE_SHIFT; + /* Must pass a single mapped page for populating bootmem_region_list. */ + init_boot_pages(__pa(&_end), xenheap_initial_phys_start); xenheap_phys_end = DIRECTMAP_MBYTES << 20; #else if ( !xen_phys_start ) -- 2.30.2